﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace Ferreteria.Forms
{
    public partial class FrmBusComprobante : Form
    {
        DisancoEntities context;
        DataTable dtComprobante;
        public Ventas ComprobanteSelec;
        public VentasAdicionales ComprobanteXSelec;
        DateTime fechaDesdeComprobante;
        DateTime fechaHastaComprobante;
        String TipoComp = null;

        public FrmBusComprobante()
        {
            InitializeComponent();
            CargarGrillaComp();
            cmbCategorias.SelectedIndex = 0;
            radbtnFactA.Checked = true;
        }

      
        private void CargarGrillaComp()
        {
            context = new DisancoEntities(Ferreteria.Clases.Constantes.cadenaConexion);
            dtComprobante = new DataTable();
            dtComprobante.Columns.Add("id");
            dtComprobante.Columns.Add("Cliente");
            dtComprobante.Columns.Add("Fecha");
            dtComprobante.Columns.Add("Tipo Comprob");
            dtComprobante.Columns.Add("Comprobante");
            dtComprobante.Columns.Add("Estado");
            dtComprobante.Columns.Add("Monto Total");
           
        }

        private void btnBuscar_Click(object sender, EventArgs e)
        {
            context = new DisancoEntities(Ferreteria.Clases.Constantes.cadenaConexion);
            dtComprobante.Rows.Clear();

            fechaDesdeComprobante = dtimeFechaDesde.Value;
            fechaHastaComprobante = dtimeFechaHasta.Value;
            string Estado = Clases.Estado.Emitida;

            bool exito ;
           

            if (radbtnFactA.Checked)
            {
                TipoComp = "A";
                exito = true;
            }
            else
                if (radbtnFactB.Checked)
                {
                    TipoComp = "B";
                    exito = true;
                }
                else
                    if (radbtnCompX.Checked)
                    {
                        TipoComp = "X";
                        var ComprXQuery = from compr in context.VentasAdicionales
                                          where compr.Clientes.cliente_nombre.Contains(txbBuscar.Text)
                                          where compr.va_fecha >= fechaDesdeComprobante
                                          where compr.va_fecha <= fechaHastaComprobante
                                          where compr.va_estado == Estado
                                          select compr;

                        foreach (var compr in ComprXQuery)
                        {
                            DataRow filaCompr = dtComprobante.NewRow();

                            filaCompr["id"] = compr.va_id;
                            filaCompr["Cliente"] = compr.Clientes.cliente_nombre;
                            filaCompr["Fecha"] = compr.va_fecha;
                            filaCompr["Tipo Comprob"] = TipoComp;
                            string nrocompini = compr.va_nro_comp_ini.ToString("0000-00000000");
                            filaCompr["Comprobante"] = nrocompini;
                            filaCompr["Estado"] = compr.va_estado;
                            filaCompr["Monto Total"] = "$ " + Decimal.Round(Convert.ToDecimal(compr.va_monto),2);
                            dtComprobante.Rows.Add(filaCompr);
                        }
                        dgvComprobantes.DataSource = dtComprobante;
                        exito = false;
                    }
                    else
                    {
                        exito = false;
                        MessageBox.Show("Debe Seleccionar un Tipo de Comprobante", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    }   
               
                
                if (exito == true)
                {
                    var ComprQuery = from compr in context.Ventas
                                 where compr.Clientes.cliente_nombre.Contains(txbBuscar.Text)
                                 where compr.venta_fecha >= fechaDesdeComprobante
                                 where compr.venta_fecha <= fechaHastaComprobante
                                 where compr.venta_tipo_comprobante.Equals(TipoComp)
                                 where compr.venta_estado == Estado
                                 select compr;
                    foreach (var compr in ComprQuery)
                    {
                        DataRow filaCompr = dtComprobante.NewRow();

                        filaCompr["id"] = compr.id_venta;
                        filaCompr["Cliente"] = compr.Clientes.cliente_nombre;
                        filaCompr["Fecha"] = compr.venta_fecha;
                        filaCompr["Tipo Comprob"] = compr.venta_tipo_comprobante;
                        string nrocompini = compr.venta_nro_inicio.ToString("0000-00000000");
                        filaCompr["Comprobante"] = nrocompini;
                        filaCompr["Estado"] = compr.venta_estado;
                        filaCompr["Monto Total"] = "$ " + Decimal.Round(Convert.ToDecimal(compr.venta_monto),2);
                        dtComprobante.Rows.Add(filaCompr);
                    }
                    dgvComprobantes.DataSource = dtComprobante;
                }

                dgvComprobantes.Columns["id"].Visible = false;
                dgvComprobantes.Columns[1].AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill;
                dgvComprobantes.DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter;
                dgvComprobantes.ColumnHeadersDefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter;
                dgvComprobantes.RowsDefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter;
                dgvComprobantes.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.AllCells;


            
        }

        private void dgvComprobantes_CellClick(object sender, DataGridViewCellEventArgs e)
        {
            context = new DisancoEntities(Ferreteria.Clases.Constantes.cadenaConexion);
            int ComprID = Convert.ToInt32(dgvComprobantes[0,dgvComprobantes.CurrentRow.Index].Value.ToString());
            if (TipoComp == "X")
            {
                this.ComprobanteXSelec = context.VentasAdicionales.FirstOrDefault(compx => compx.va_id.Equals(ComprID));
            }
            else
                this.ComprobanteSelec = context.Ventas.FirstOrDefault(comp => comp.id_venta.Equals(ComprID));
        }

        private void bttnSalir_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        private void bttnAceptar_Click(object sender, EventArgs e)
        {
            if (ComprobanteSelec != null)
            {
                this.Close();
            }
            else
                if (ComprobanteXSelec != null)
                    this.Close();
                
            
            else {
                MessageBox.Show("Debe Seleccionar un Comprobante", "Error",MessageBoxButtons.OK,MessageBoxIcon.Error);
                  }
        }

        private void FrmBusComprobante_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.KeyCode == Keys.Enter)
            {
                e.Handled = true;
                this.btnBuscar_Click(sender, e);
            }
        }

        private void btnLimpiar_Click(object sender, EventArgs e)
        {
            cmbCategorias.SelectedIndex = 0;
            txbBuscar.Text = "";
            dtComprobante.Rows.Clear();
        }
    }
}
